//#include <iostream>
//using namespace std;
//
//int calc(int a, char b, int c)
//{
//	switch(b)
//	{
//		case '+':
//			return a + c;
//			case '-':
//				return a - c;
//				case '*':
//					return a * c;
//					case '/':
//						return a / c;
//						case '%':
//							return a % c;
//	}
//}
//
//int main()
//{
//	int a;
//	char b;
//	int c;
//	cin >> a >> b >> c;
//	
//	cout << calc(a, b, c) << endl;
//	
//	return 0;
// } 



//#include <iostream>
//#include <iomanip>
//using namespace std;
//
//float max(float a, float b, float c)
//{
//	float m = a > b ? a : b;
//	return m > c ? m : c;
//}
//
//int main()
//{
//	float a, b, c;
//	cin >> a >> b >> c;
//	float m = max(a, b, c) / (max(a + b, b, c) * max(a, b, b + c));
//
//	cout << fixed << setprecision(3) << m << endl;
//
//	return 0;
//}



//#include <iostream>
//#include <algorithm>
//using namespace std;
//
//const int N = 110;
//int a[N];
//
//int main()
//{
//	int n;
//	cin >> n;
//	for (int i = 0; i < n; i++)
//	{
//		cin >> a[i];
//	}
//	
//	int m = n - 1;
//	int i = 0;
//	int Max = a[i];
//	int Min = a[i];
//	while (m--)
//	{
//		Max =  Max > max(a[i], a[i + 1]) ? Max : max(a[i], a[i + 1]);
//		Min = Min < min(a[i], a[i + 1]) ? Min : min(a[i], a[i + 1]);
//		i++;
//	}
//	cout << Max - Min << endl;
//	
//	return 0;
// } 



#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;

int main()
{
	int m, n;
	cin >> m >> n;
	double Max2 = -1;
	
	double ave = 0;
	for (int i = 0; i < m; i++)
	{
		int Max = 0;
		int Min = ;
		int sum = 0;
		for (int j = 0; j < n; j++)
		{
			int c;
			cin >> c;
			sum += c;
			Max = max(Max, c);
			Min = min(Min, c);
		}
		ave = (sum - Max - Min) * 1.0 / (n - 2);
		Max2 = max(Max2, ave);
	}
	cout << fixed << setprecision(2) << Max2 << endl;
	
	
	return 0;
}
